r"""
ChatPromptTemplate除了PromptTemplate的format,partial,invoke外不家format_messages和format_prompt
format_messages：把模板变量替换后，直接生成消息列表，一般包含：SystemMessage,HumanMessage,AIMessage
常用场景是用于手动查看或调试Prompt的最终消息结构，或者自己拼接进Chain
format_prompt：用于生成一个PromptValue对象，这个是一个抽象层次更高的封装
    对于PromptTemplate（单纯文本）,返回的是StringPromptValue
    对于ChatPromptTemplate（对话模板），返回ChatPromptValue
PromptValue的两个常用方法：
    .to_string():转为文本
    .to_messages():转为消息列表
"""
from langchain_core.prompts import ChatPromptTemplate

# 创建聊天提示模板
chat_prompt1 = ChatPromptTemplate.from_messages([
    ("system", "你是一个{role}，请回答我提出问题的"),
    ("human", "请回答:{question}")
])
# 格式化聊天提示模板，填充占位符的值
prompt_value1 = chat_prompt1.format_messages(role="数据科学家", question="如何使用LangChain进行文本处理？")
print(prompt_value1)

print("=" * 50)
# 创建聊天提示模板
chat_prompt2 = ChatPromptTemplate.from_messages([
    ("system", "你是一个{role}，请回答我提出问题的"),
    ("human", "请回答:{question}")
])
# 格式化聊天提示模板，填充占位符的值
prompt_value2 = chat_prompt2.format_prompt(role="数据科学家", question="如何使用LangChain进行文本处理？")
print(prompt_value2)
# 转为消息列表输出
print(prompt_value2.to_messages())